SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TTPAGO_MASI_I05]          
/*-------------------------------------------------------*/            
/*---Empresa              : OFISIS S.A.                --*/            
/*---Cliente              : OFISIS                     --*/            
/*---Sistema              : Tesoreria                  --*/            
/*---M,dulo               : Empresa                    --*/            
/*---Programa             : Grabacion Detalle          --*/            
/*---                       Movimiento Bancos          --*/            
/*---                       (Egresos)                  --*/              
/*---Script               : tdbanc_p.sql               --*/            
/*---Nombre SP            : SP_TTPAGO_MASI_I05         --*/            
/*---Desarrollado por     : Denis Villacres P.         --*/            
/*---Fecha Creaci,n       : 06/01/2004                 --*/            
/*---Base Datos           : Microsoft Sql Server       --*/            
/*---Versi,n              : 2000                       --*/            
/*---Invoca a SP          :                            --*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*---Modificado 1 por     : Carlos MARQUEZ E.          --*/            
/*---Fecha Modificaci,n   : 24/09/2004                 --*/             
/*---Detalle Modificaci,n : Retenciones x Proveedor    --*/            
/*-------------------------------------------------------*/    
/*-------------------------------------------------------*/            
/*---Modificado 2 por     : Miguel Carrasco.          --*/            
/*---Fecha Modificaci,n   : 02/07/2009                 --*/             
/*---Detalle Modificaci,n : Tomar importe redondeado para descuento a Factura--*/            
/*-------------------------------------------------------*/           
/*-------------------------------------------------------*/            
/*---Comentarios                                       --*/            
/*---                                                  --*/            
/*---                                                  --*/            
/*-------------------------------------------------------*/            
/*-------------------------------------------------------*/            
/*---Drop Proc SP_TTPAGO_MASI_I05                      --*/            
/*---Grant all on SP_TTPAGO_MASI_I05 to public         --*/             
/*---SP_TTPAGO_MASI_I05                                --*/            
/*-------------------------------------------------------*/            
 @ISCO_EMPR   TD_VC_002,             
 @ISCO_USUA_MODI  TD_VC_008_USUA,            
 @ISCO_BANC   TD_VC_003,             
 @ISNU_CNTA_BANC  TD_VC_020,            
 @ISAA_BNCO   TD_VC_004,             
 @ISMM_BNCO   TD_VC_002,             
 @ISTI_MOVI_BANC  TD_VC_001,              
 @ISNU_COMP_BANC  TD_VC_008,             
 @INNU_SECU   TD_IN_001,            
 @ISTI_ENTI   TD_VC_001,             
 @ISCO_ENTI   TD_VC_020,            
 @ISTI_DOCU_ENTI  TD_VC_003,            
 @ISNU_DOCU_ENTI  TD_VC_020,            
 @ISCO_MONE_DOCU  TD_VC_003,            
 @IDFE_DOCU   TD_DT_001,            
 @INIM_DOCU   TD_NU_016_004,            
 @INIM_SALD_DOCU  TD_NU_016_004,            
 @INIM_DETA   TD_NU_016_004,             
 @ISST_CIER_DOCU  TD_VC_001_SINO,            
 @ISTI_DOCU_LETR TD_VC_003,            
 @INFA_TIPO_CAMB  TD_NU_015_006,            
 @ISCO_MONE_CNTA TD_VC_003,            
 @INIM_SALD_CONV  TD_NU_016_004,            
 @INIM_DETA_NEGA  TD_NU_016_004,            
 @ISTI_MOVI_OPER  TD_VC_001,            
 @ISCO_CNTA_EMPR  TD_VC_020,            
 @ISCO_ORDE_SERV  TD_VC_020,            
 @ISCO_SUBR    TD_VC_003,        
 @INFA_CAM1_EMIS  TD_NU_015_006,      
 @INFA_CAM2_EMIS  TD_NU_015_006,      
 @INIM_DETR_CALC  TD_NU_016_004,
 @ISCO_UNID_CNTB  TD_VC_003
	As
Declare             
     @VNNU_SECU           TD_IN_001,             
     @VNIM_MOVI_ANTE      TD_NU_016_004,              
     @VNIM_TOTA           TD_NU_016_004,            
     @VNIM_CONV_ANTE      TD_NU_016_004,               
     @VNNU_REGI           TD_IN_001,                
     @VSST_SIGN           TD_VC_001,            

     @VNIM_TOTA_CLIE      TD_NU_016_004,             
     @VNIM_TOTA_PROV      TD_NU_016_004,             
     @VNIM_CONV_DOCU      TD_NU_016_004,            
     @VSCO_MONE_NACI      TD_VC_003,             
     @VSCO_MONE_EXTR      TD_VC_003,            
     @VSCO_ESTA_LETR      TD_VC_003,      
     @VSTI_DOCU_RETE      TD_VC_003,             
     @VSNO_ENTI           TD_VC_100,             
     @VSNU_RUCC           TD_VC_020,             
     @VSNU_CHEQ       TD_VC_020,             
     @VSNU_DOCU_BANC      TD_VC_020,            
     @VNIM_TOTA_DIST      TD_NU_016_004,             
     @VSTI_CAMB           TD_VC_001,             
     @VSTI_ORIG           TD_VC_001,           
     @VNFA_TIPO_CAMB   TD_NU_015_006,            
     @VDFE_OPER           TD_DT_001,            
     @VSCO_COND_CONT      TD_VC_003,             
     @VSNU_SERI           TD_VC_008,
	 @VSCO_ESTA_ORIG	  TD_VC_003           
            
Begin Tran SP_TTPAGO_MASI_I05            
            
	Select   @VSCO_MONE_NACI = CO_MONE_DEFA,            
	@VSCO_MONE_EXTR = CO_MONE_EXTR,            
	@VSCO_COND_CONT = CO_COND_CONT            
	From     TMPARA_TESO            
	Where    CO_EMPR = @ISCO_EMPR            
	
	Select   @VSTI_DOCU_RETE = TI_DOCU            
	From   TTDOCU_CNTB            
	Where    ST_DOCU_0021 = 'S'            

    If Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
      -- Se busca el estado actual del documento      
      Exec SP_TTESTA_ORIG_Q02 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @VSCO_ESTA_ORIG output    
  

	
	If @ISCO_MONE_DOCU != @ISCO_MONE_CNTA            
	  Begin            
		Select  @VSTI_CAMB = TI_CAMB,             
		 @VSTI_ORIG = TI_ORIG            
		From    TTFACA_OPCI            
		Where   CO_EMPR = @ISCO_EMPR            
		And CO_MODU = 'TEEM0001'            
		And CO_MENU = 'FTEEPBN'            
             
             
		If ( @VSTI_CAMB Is Null Or @VSTI_ORIG Is Null )            
		  Select  @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG            
		  From    TMPARA_TESO            
		  Where   CO_EMPR = @ISCO_EMPR            
             
		Select  @VDFE_OPER = FE_OPER            
		From    TCMOVI_BANC            
		Where   CO_EMPR = @ISCO_EMPR             
		     And CO_UNID_CONC = @ISCO_UNID_CNTB
		     And CO_BANC = @ISCO_BANC
		     And NU_CNTA_BANC = @ISNU_CNTA_BANC              
		     And AA_BNCO = @ISAA_BNCO            
		     And MM_BNCO = @ISMM_BNCO             
		     And TI_MOVI_BANC = @ISTI_MOVI_BANC            
		     And NU_COMP_BANC = @ISNU_COMP_BANC             
             
		Select  @VNIM_CONV_DOCU = (Select  OFITESO.dbo.FN_TCFACT_CAMB_Q03(@ISCO_MONE_CNTA, @ISCO_MONE_DOCU,           
  
		/*@INIM_DETR_CALC*/@INIM_DETA, @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_CAM1_EMIS, @INFA_CAM2_EMIS))  
		     
		Select  @VNIM_CONV_DOCU = Round(@VNIM_CONV_DOCU, 2)            
      End            
    Else            
        Select  @VNIM_CONV_DOCU = @INIM_DETA /*@INIM_DETR_CALC*/
            
     If @INNU_SECU IS NULL            
       Begin            
          Select  @VNNU_SECU = NU_SECU            
          From    TDMOVI_BANC            
          Where   CO_EMPR = @ISCO_EMPR            
				  And CO_UNID_CONC = @ISCO_UNID_CNTB
                  And CO_BANC = @ISCO_BANC            
                  And NU_CNTA_BANC = @ISNU_CNTA_BANC            
                  And AA_BNCO = @ISAA_BNCO            
                  And MM_BNCO = @ISMM_BNCO             
                  And TI_MOVI_BANC = @ISTI_MOVI_BANC            
                  And NU_COMP_BANC = @ISNU_COMP_BANC            
            
		  If @VNNU_SECU > 0            
             Select  @VNNU_SECU = @VNNU_SECU + 1            
   Else            
             Select  @VNNU_SECU = 1               

		  If @ISTI_DOCU_ENTI = @VSTI_DOCU_RETE            
			Begin            
			  Select  @VSNU_SERI = Substring(@ISNU_DOCU_ENTI, 1, Patindex('%-%', @ISNU_DOCU_ENTI)-1)            
 
			     
			  /* Genero el oltimo correlativo para el documento comp. de retenci«n */            
			  Exec SP_TTULTI_CORR_I01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISTI_DOCU_ENTI, @VSNU_SERI, @ISNU_DOCU_ENTI 
OUTPUT            
			End            
                
			Insert Into TDMOVI_BANC (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC,            
				NU_COMP_BANC, NU_SECU, TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI, CO_MONE_DOCU,            
 
				FE_DOCU, IM_DOCU, IM_SALD_DOCU, IM_DETA, IM_CONV_DOCU, ST_CIER_DOCU, IM_DETA_NEGA,            
 
				IM_SALD_CONV, FA_CAM1_EMIS, FA_CAM2_EMIS, IM_DETR_CALC, CO_USUA_CREA, CO_USUA_MODI, 
CO_UNID_CONC)
			Values (@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC,            
				@ISNU_COMP_BANC, @VNNU_SECU, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, 
@ISCO_MONE_DOCU,             
				@IDFE_DOCU, @INIM_DOCU, @INIM_SALD_DOCU, @INIM_DETA, @VNIM_CONV_DOCU, @ISST_CIER_DOCU, 
@INIM_DETA_NEGA,             
				@INIM_SALD_CONV, @INFA_CAM1_EMIS, @INFA_CAM2_EMIS, @INIM_DETR_CALC, @ISCO_USUA_MODI, 
@ISCO_USUA_MODI, @ISCO_UNID_CNTB)
            
			If @@error <> 0            
			  Begin            
				Rollback tran            
				Return            
			  End                
            
			If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
			  Begin      
				--Se cancela el documento y se graba en tabla de kardex de estados de documentos      
				Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, 
      
				 @VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU      
			
				If @@error <> 0        
				  Begin        
					Rollback Tran SP_TTPAGO_MASI_I05       
					Return        
				  End            
			  End      
			Else       
			  If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
				Begin      
				  --Se cancela el documento y se graba en tabla de kardex de estados de documentos      
				  Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, 
@ISNU_DOCU_ENTI,       
				  @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU      
			
				  If @@error <> 0        
				    Begin        
				      Rollback Tran SP_TTPAGO_MASI_I05       
				      Return        
				    End            
				End      
       End       

     Else             
       Begin            
         Select  @VNIM_CONV_ANTE = IsNull(IM_CONV_DOCU,0)            
         From    TDMOVI_BANC             
         Where   CO_EMPR = @ISCO_EMPR            
                 And CO_UNID_CONC = @ISCO_UNID_CNTB
                 And CO_BANC = @ISCO_BANC            
                 And NU_CNTA_BANC = @ISNU_CNTA_BANC            
                 And AA_BNCO = @ISAA_BNCO            
                 And MM_BNCO = @ISMM_BNCO            
                 And TI_MOVI_BANC = @ISTI_MOVI_BANC            
                 And NU_COMP_BANC = @ISNU_COMP_BANC            
                 And NU_SECU = @INNU_SECU             
            
         Update  TDMOVI_BANC             
          Set    IM_DETA = @INIM_DETA,            
                 IM_CONV_DOCU = @VNIM_CONV_DOCU,                          
                 ST_CIER_DOCU = @ISST_CIER_DOCU,            
                 IM_DETA_NEGA = @INIM_DETA_NEGA,            
                 FE_USUA_MODI = getdate(),            
                 CO_USUA_MODI = @ISCO_USUA_MODI            
          Where  CO_EMPR = @ISCO_EMPR            
                 And CO_UNID_CONC = @ISCO_UNID_CNTB
                 And CO_BANC = @ISCO_BANC            
                 And NU_CNTA_BANC = @ISNU_CNTA_BANC            
                 And AA_BNCO = @ISAA_BNCO            
                 And MM_BNCO = @ISMM_BNCO   
                 And TI_MOVI_BANC = @ISTI_MOVI_BANC            
                 And NU_COMP_BANC = @ISNU_COMP_BANC            
                 And NU_SECU = @INNU_SECU            
            
          If @@error <> 0            
             Begin            
               Rollback tran            
	           Return            
             End                
            
		Select @VNIM_CONV_DOCU = @VNIM_CONV_DOCU - @VNIM_CONV_ANTE      
		
		If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
		  Begin      
			--Se cancela el documento y se graba en tabla de kardex de estados de documentos      
			Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,       
			@VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU      
			
			If @@error <> 0        
			  Begin        
				Rollback Tran SP_TTPAGO_MASI_I05       
				Return        
			  End            
		  End      
		Else       
		  If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''      
			Begin      
			  --Se cancela el documento y se graba en tabla de kardex de estados de documentos      
			  Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,       
			  @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU      
			
			  If @@error <> 0        
				Begin        
				  Rollback Tran SP_TTPAGO_MASI_I05       
				  Return        
				End            
			End      
            
      End            
            
            
-- **** PARA ACTUALIZAR LOS MONTOS ****            
            
     Select  @VNIM_MOVI_ANTE  = IsNull(IM_MOVI,0)             
     From    TCMOVI_BANC            
     Where   CO_EMPR = @ISCO_EMPR             
             And CO_UNID_CONC = @ISCO_UNID_CNTB
             And CO_BANC = @ISCO_BANC             
             And NU_CNTA_BANC = @ISNU_CNTA_BANC              
             And AA_BNCO = @ISAA_BNCO            
             And MM_BNCO = @ISMM_BNCO             
             And TI_MOVI_BANC = @ISTI_MOVI_BANC            
             And NU_COMP_BANC = @ISNU_COMP_BANC             
            
     /* Sumo todos los documentos de clientes */            
     Select  @VNIM_TOTA_CLIE = IsNull(Sum(IsNull(IM_DETA_NEGA,0)),0)            
     From    TDMOVI_BANC            
     Where   CO_EMPR = @ISCO_EMPR            
             And CO_UNID_CONC = @ISCO_UNID_CNTB
             And CO_BANC = @ISCO_BANC            
             And NU_CNTA_BANC = @ISNU_CNTA_BANC            
             And AA_BNCO = @ISAA_BNCO            
             And MM_BNCO = @ISMM_BNCO            
             And TI_MOVI_BANC = @ISTI_MOVI_BANC            
             And NU_COMP_BANC = @ISNU_COMP_BANC
             And TI_ENTI = 'C'            
             And Rtrim(IsNull(CO_CNTA_EMPR, '')) = ''            
            
     /* Sumo todos los documentos de proveedores */            
     Select  @VNIM_TOTA_PROV = IsNull(Sum(IsNull(IM_DETA_NEGA,0)),0)            
     From    TDMOVI_BANC            
     Where   CO_EMPR = @ISCO_EMPR            
             And CO_UNID_CONC = @ISCO_UNID_CNTB
             And CO_BANC = @ISCO_BANC            
             And NU_CNTA_BANC = @ISNU_CNTA_BANC            
             And AA_BNCO = @ISAA_BNCO            
             And MM_BNCO = @ISMM_BNCO            
             And TI_MOVI_BANC = @ISTI_MOVI_BANC            
             And NU_COMP_BANC = @ISNU_COMP_BANC            
             And TI_ENTI = 'P'            
             And Rtrim(IsNull(CO_CNTA_EMPR, '')) = ''            
      
     /* Sumo todos los que se hayan ingresado con distribuci½n*/            
     Select  @VNIM_TOTA_DIST = IsNull(Sum(IsNull(PatIndex(TI_MOVI_OPER, 'C')* IM_DETA - PatIndex(TI_MOVI_OPER, 'A')* 
IM_DETA,0)),0)             
     From    TDMOVI_BANC            
     Where   CO_EMPR = @ISCO_EMPR            
         And CO_UNID_CONC = @ISCO_UNID_CNTB
 And CO_BANC = @ISCO_BANC            
         And NU_CNTA_BANC = @ISNU_CNTA_BANC            
         And AA_BNCO = @ISAA_BNCO            
         And MM_BNCO = @ISMM_BNCO            
         And TI_MOVI_BANC = @ISTI_MOVI_BANC            
         And NU_COMP_BANC = @ISNU_COMP_BANC            
         And Rtrim(IsNull(CO_CNTA_EMPR, '')) != ''            
            
     Select   @VNIM_TOTA = @VNIM_TOTA_PROV + @VNIM_TOTA_CLIE + IsNull(@VNIM_TOTA_DIST,0)            
            
     Update  TCMOVI_BANC            
     Set     IM_MOVI = Round(@VNIM_TOTA,2),            
             CO_USUA_MODI = @ISCO_USUA_MODI,             
             FE_USUA_MODI = getdate()                     
     Where   CO_EMPR = @ISCO_EMPR             
             And CO_UNID_CONC = @ISCO_UNID_CNTB
             And CO_BANC = @ISCO_BANC             
             And NU_CNTA_BANC = @ISNU_CNTA_BANC             
             And AA_BNCO = @ISAA_BNCO            
             And MM_BNCO = @ISMM_BNCO             
             And TI_MOVI_BANC = @ISTI_MOVI_BANC             
             And NU_COMP_BANC = @ISNU_COMP_BANC             
            
     If @@error <> 0            
        Begin            
          Rollback tran SP_TTPAGO_MASI_I05        
	      Return            
        End              
            
            
/* PARA COMPROBANTES DE RETENCION*/            
            
commit tran SP_TTPAGO_MASI_I05
            
/*------------------------------------- Fin -------------------------------------*/


GO
